home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / pvm34b3.zip / pvm34b3 / pvm3 / src / pmsg.h < prev    next >
C/C++ Source or Header  |  1997-07-22  |  4KB  |  130 lines

  1.  
  2. /* $Id: pmsg.h,v 1.3 1997/06/27 17:32:50 pvmsrc Exp $ */
  3.  
  4. /*
  5.  *         PVM version 3.4:  Parallel Virtual Machine System
  6.  *               University of Tennessee, Knoxville TN.
  7.  *           Oak Ridge National Laboratory, Oak Ridge TN.
  8.  *                   Emory University, Atlanta GA.
  9.  *      Authors:  J. J. Dongarra, G. E. Fagg, M. Fischer
  10.  *          G. A. Geist, J. A. Kohl, R. J. Manchek, P. Mucci,
  11.  *         P. M. Papadopoulos, S. L. Scott, and V. S. Sunderam
  12.  *                   (C) 1997 All Rights Reserved
  13.  *
  14.  *                              NOTICE
  15.  *
  16.  * Permission to use, copy, modify, and distribute this software and
  17.  * its documentation for any purpose and without fee is hereby granted
  18.  * provided that the above copyright notice appear in all copies and
  19.  * that both the copyright notice and this permission notice appear in
  20.  * supporting documentation.
  21.  *
  22.  * Neither the Institutions (Emory University, Oak Ridge National
  23.  * Laboratory, and University of Tennessee) nor the Authors make any
  24.  * representations about the suitability of this software for any
  25.  * purpose.  This software is provided ``as is'' without express or
  26.  * implied warranty.
  27.  *
  28.  * PVM version 3 was funded in part by the U.S. Department of Energy,
  29.  * the National Science Foundation and the State of Tennessee.
  30.  */
  31.  
  32. /*
  33.  *    pmsg.h
  34.  *
  35.  *    Libpvm and pvmd message descriptors.
  36.  *
  37. $Log: pmsg.h,v $
  38.  * Revision 1.3  1997/06/27  17:32:50  pvmsrc
  39.  * Updated for WIN32 header files & Authors.
  40.  *
  41.  * Revision 1.2  1997/01/28  19:28:17  pvmsrc
  42.  * New Copyright Notice & Authors.
  43.  *
  44.  * Revision 1.1  1996/09/23  23:43:24  pvmsrc
  45.  * Initial revision
  46.  *
  47.  *
  48.  */
  49.  
  50. /*
  51. * vector of pack/unpack routines for an encoding
  52. */
  53.  
  54. #ifdef WIN32
  55. #ifndef _XDR_HEADERS
  56. #define _XDR_HEADERS
  57. #include "..\xdr\types.h"
  58. #include "..\xdr\xdr.h"
  59. #endif
  60. #endif
  61.  
  62. struct encvec {
  63.     int (*enc_init)();    /* initialize write */
  64.     int (*dec_init)();    /* initialize read */
  65.     int (*enc_byte)();    /* encode bytes */
  66.     int (*dec_byte)();    /* decode bytes */
  67.     int (*enc_short)();    /* encode shorts */
  68.     int (*dec_short)();    /* ... */
  69.     int (*enc_int)();
  70.     int (*dec_int)();
  71.     int (*enc_long)();
  72.     int (*dec_long)();
  73.     int (*enc_ushort)();
  74.     int (*dec_ushort)();
  75.     int (*enc_uint)();
  76.     int (*dec_uint)();
  77.     int (*enc_ulong)();
  78.     int (*dec_ulong)();
  79.     int (*enc_float)();
  80.     int (*dec_float)();
  81.     int (*enc_double)();
  82.     int (*dec_double)();
  83.     int (*enc_cplx)();
  84.     int (*dec_cplx)();
  85.     int (*enc_dcplx)();
  86.     int (*dec_dcplx)();
  87. };
  88.  
  89. /*
  90. * descriptor for a message
  91. */
  92.  
  93. struct pmsg {
  94.     struct pmsg *m_link;    /* chain or 0 */
  95.     struct pmsg *m_rlink;
  96.     struct encvec *m_codef;    /* data encoders/decoders */
  97.     struct frag *m_frag;    /* master frag or 0 if we're list head */
  98.     struct frag *m_cfrag;    /* pack/unpack position */
  99.     int m_ref;                /* refcount */
  100.     int m_mid;                /* message id */
  101.     int m_len;                /* total body length */
  102.     int m_ctx;                /* communication context */
  103.     int m_tag;                /* type tag */
  104.     int m_wid;                /* wait id */
  105.     int m_src;                /* src address */
  106.     int m_dst;                /* dst address */
  107.     int m_enc;                /* encoding signature */
  108.     int m_flag;
  109.     int m_cpos;                /* pack/unpack position */
  110.     int m_crc;                /* CRC from header */
  111.     XDR m_xdr;
  112. };
  113.  
  114. #define    MM_PACK        1        /* initialized for packing */
  115. #define    MM_UPACK    2        /* initialized for unpacking */
  116. #define    MM_PRIO        4        /* put message at head of queue */
  117. #ifdef IMA_CSPP
  118. #define    MM_DIFFNODE    256        /* message came from different (node?) */
  119. #endif
  120.  
  121. int pvmgetdsig __ProtoGlarp__ (( ));
  122. struct pmsg * pmsg_new __ProtoGlarp__ (( int master ));
  123. void pmsg_unref __ProtoGlarp__ (( struct pmsg *mp ));
  124. int pmsg_extend __ProtoGlarp__ (( struct pmsg *mp ));
  125. int pmsg_decmore __ProtoGlarp__ (( struct pmsg *mp ));
  126. int pmsg_setlen __ProtoGlarp__ (( struct pmsg *mp ));
  127. int pmsg_setenc __ProtoGlarp__ (( struct pmsg *mp, int enc ));
  128. int pmsg_dump __ProtoGlarp__ (( struct pmsg *mp, int lvl ));
  129.  
  130.